package com.example.mislugares;

public class GeoPunto {
	//Atributos
	private double longitud, latitud;
	//protected int longitud, latitud;
	
	//Constructor
	/**
	 *  Constructor de la clase GeoPunto
	 * @param longitud del punto
	 * @param latitud del punto
	 */
	public  GeoPunto (double longitud, double latitud){
		//this.longitud = (int) (longitud * 1E6);
		//this.latitud = (int) (latitud * 1E6);
		this.latitud = latitud;
		this.longitud = longitud;
	}
	
	public GeoPunto(int longitud, int latitud){
		this.longitud = longitud;
		this.latitud = latitud;
	}
	
	/**
	 * Establecer la longitud
	 * @param longitud 
	 */
	public void setLongitud (double longitud){
		//this.longitud = (int) (longitud * 1E6);
		this.longitud = (longitud);
	}
	
	/**
	 *  Obtener la longitud
	 * @return longitud
	 */
	public double getLongitud(){
		//return (longitud/1E6);
		return longitud;
	}
	
	/**
	 * Establecer la latitud
	 * @param latitud
	 */
	public void setLatitud (double latitud){
		//this.latitud = (int) (latitud * 1E6);
		this.latitud =  (latitud);
	}
	
	/**
	 * Obtener la latitud
	 * @return latitud
	 */
	public double getLatitud (){
		System.out.println(latitud/1E6);
		//return (latitud/1E6);
		return latitud;
	}
	
	/** Pasa a string el punto
	 * 
	 */
	public String toString(){
		return "GeoPunto:" + longitud + " " + latitud;
	}
	
	 /** Calcula la distancia entre dospuntos.

	* @param punto el punto sobre el que calculamos la distancia
	* 
	*/
	public double distancia (GeoPunto punto){
		 final double RADIO_TIERRA = 6371000; // en metros
	      double dLat = Math.toRadians(latitud - punto.latitud);
	      double dLon = Math.toRadians(longitud - punto.longitud);
	      double lat1 = Math.toRadians(punto.latitud);
	      double lat2 = Math.toRadians(latitud);
	      double a =    Math.sin(dLat/2) * Math.sin(dLat/2) +
	                    Math.sin(dLon/2) * Math.sin(dLon/2) *
	                    Math.cos(lat1) * Math.cos(lat2);
	      double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
	      return c * RADIO_TIERRA; 
	}
	

	
}
